home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / forlib1.arc / KEYPGM.ASM < prev    next >
Assembly Source File  |  1986-01-15  |  2KB  |  79 lines

  1. DATA SEGMENT PUBLIC 'DATA'
  2. TITLE__ DB 'TITLE: DOS KEYBOARD INPUT ROUTINES FOR MS FORTRAN'
  3. COPY_R  DB '   (C) John R. Petrocelli'
  4.         DB '       Schenectady,NY    '
  5.         DB '       01/13/86          '
  6. TO_MANY DB 0DH,0AH
  7.         DB 'BUFFERED KEYBOARD INPUT REQUEST OUT OF RANGE(1 TO 80 CHRS)'
  8.         DB 0DH,0AH,'$'
  9. BUF_GET DB ?
  10. BUF_IN  DB ?
  11. BUF_MSG DB 80 DUP(?)
  12. BUF_MAX DB ?
  13. DATA ENDS
  14. DGROUP GROUP DATA
  15. CODE   SEGMENT 'CODE'
  16.        ASSUME CS:CODE,DS:DGROUP,SS:DGROUP
  17. PUBLIC KEYBUF
  18. KEYBUF PROC FAR
  19.        PUSH    BP
  20.        PUSH    AX
  21.        PUSH    BX
  22.        PUSH    CX
  23.        PUSH    DX
  24.        PUSH    DS
  25.        MOV     BP,SP
  26.        LES     BX,DWORD PTR [BP+24]
  27.        MOV     AL,BYTE PTR [BX]
  28.        CMP     AL,80
  29.        JA      BAD_BUF
  30.        CMP     AL,0
  31.        JLE     BAD_BUF
  32.        MOV     BUF_GET,AL
  33.        LEA     DX,BUF_GET
  34.        MOV     AX,0A00H
  35.        INT     21H
  36.        LES     BX,DWORD PTR [BP+20]
  37.        MOV     CH,00
  38.        MOV     CL,BUF_IN
  39.        MOV     [BX],CX
  40.        LEA     BX,BUF_MSG
  41.        MOV     SI,BX
  42.        LES     BX,DWORD PTR [BP+16]
  43.        MOV     DI,BX
  44.        CLD
  45.        REPZ    MOVSB
  46. BYE_KEY:
  47.        POP     DS
  48.        POP     DX
  49.        POP     CX
  50.        POP     BX
  51.        POP     AX
  52.        POP     BP
  53.        RET     12
  54. BAD_BUF:
  55.        LEA     DX,TO_MANY
  56.        MOV     AX,0900H
  57.        INT     21H
  58.        LES     BX,DWORD PTR [BP+20]
  59.        MOV     BYTE PTR [BX],-1
  60.        JMP     BYE_KEY
  61.        KEYBUF ENDP
  62. PUBLIC KEYIN
  63. KEYIN  PROC FAR
  64.        PUSH    BP
  65.        PUSH    AX
  66.        PUSH    BX
  67.        MOV     BP,SP
  68.        MOV     AX,0C07H
  69.        INT     21H
  70.        LES     BX,DWORD PTR [BP+10]
  71.        MOV     [BX],AL
  72.        POP     BX
  73.        POP     AX
  74.        POP     BP
  75.        RET     4
  76.        KEYIN   ENDP
  77.        CODE ENDS
  78. END
  79.